package com.jsbs.iam.user.service;

import com.github.pagehelper.PageInfo;
import com.jsbs.iam.user.dto.IamApplyDto;
import com.jsbs.iam.user.entity.IamApplySystem;
import com.jsbs.iam.user.entity.IamUserInfo;
import com.jsbs.iam.user.vo.IamApplyVo;
import com.jsbs.iam.user.vo.IamTypeSystemVo;

import java.util.List;
import java.util.Set;

/**
 * @author zhouxiangyang
 * @className IApplySystemService
 * @date 2022/12/8 21:06
 * @description:
 */
public interface IApplySystemService {

    /**
     * 获取应用列表
     * @param userCode
     * @param companyCode
     * @return
     * @throws Exception
     */
    List<IamApplySystem> getApplySystem (String userCode, String companyCode,String applyUrl);

    /**
     * 查询所有应用系统
     * @return
     */
    List<String> getApplySystemAll ();

    /**
     * 通过应用类型基础数据表的应用类型编码关联应用系统数据查询并分页
     *
     * @return
     */
    PageInfo<IamApplyVo> getIamApplyPage (IamApplyDto iamApplyDto,String companyCode);

    /**
     * 功能描述：获取租户应用列表
     * @param companyCode
     * @return
     */
    List<IamApplySystem> queryList(String companyCode);

    /**
     * 登录策略搜索（模糊搜索）
     * @param apply
     * @return
     */
    List<IamApplyVo> getApplyCodeOrName (String apply);

    /**
     * 根据应用名称查询应用编码
     * @param applyName
     * @return
     */
    String getApplyTypeCode (String applyName);

    /**
     * 根据应用编码查询应用名称
     * @param applyTypeCode
     * @return
     */
    String getApplyTypeName (String applyTypeCode);

    /**
     * 功能描述：根据服务域名获取应用信息
     * @param requestUrl
     * @return
     */
    IamApplySystem queryByRequestUrl(String requestUrl);

    /**
     * 功能描述：根据应用类型获取应用列表
     * @param companyCode
     * @param applyTypeCode
     * @return
     */
    IamTypeSystemVo queryByTypeCode(String companyCode, String applyTypeCode);


    /**
     * 功能描述：根据应用编码查询应用相关信息
     * param：applyCodes
     * param：companyCode
     * @return List<IamApplySystem>
     */
    List<IamApplySystem> queryApplySystemByApplyCode(Set<String> applyCodes,String companyCode);

    /**
     * 根据前端链接url获取应用类型
     * @param applyUrl
     * @return
     */
    String queryApplyTypeCode (String applyUrl);




}
